﻿using Project;
using UnityEngine;

public class TestMi : MonoBehaviour, IBuffOwner
{
    // 这里是对应对象UI事件的名字 如果为空 不会发送事件
    string IBuffOwner.AddIconEventName => "AddPlayerBuff";
    // 获取计时Buff时 需要给与元数据作为计算依据
    float IBuffOwner.GetSouceData(BuffID buffID)
    {
        return buffID switch
        {
            BuffID.其他 => PlayerDataSingle.Intacne.HP,
            BuffID.中毒 => PlayerDataSingle.Intacne.HP,
            BuffID.快速 => PlayerDataSingle.Intacne.HP,
            _ => throw new System.Exception("该类型可能为不可计算类型")
        };
    }
    // 计时BUFF的执行结果逻辑 会通过配置好的buff数据 返回计算完成的数值
    void IBuffOwner.Execute(BuffID buffID, float value)
    {
        switch (buffID)
        {
            case BuffID.中毒:
                PlayerDataSingle.Intacne.HP = (int)value;
                Debug.Log($"中毒剩余Hp{PlayerDataSingle.Intacne.HP}");
                break;
            case BuffID.快速:
                Debug.Log("快速");
                break;
            default:
                break;
        }
    }
    // 该方法用于配置被动buff的倍率数据或增减数据
    float IBuffOwner.GetPassiveValue(BuffID buffID)
    {
        return buffID switch
        {
            BuffID.其他 => 0.2f,
            BuffID.中毒 => 5f,
            BuffID.快速 => 0.3f,
            _ => throw new System.Exception("该类型可能为不可计算类型")
        };
    }
    private void Start()
    {
        BuffSystem.Global.AddBuff(this, BuffID.中毒);
    }
}